package com.softer.chengxin.enterprise.dao;

import com.softer.chengxin.enterprise.dao.provider.EnterpriseDaoProvider;
import com.softer.chengxin.enterprise.entity.Enterprise;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2019/12/12
 */
@Mapper
@Repository
public interface EnterpriseDao {
    /**
     * 校验缺失企业表中，是否已经注册过统一信用代码
     *
     * @param code 录入的统一信用代码
     * @return 查询的统一信用代码
     */
    @Select("SELECT `code` FROM enterprises_lack_info WHERE `code`=#{code}")
    String getCode(@Param("code") String code);

    /**
     * 缺失企业录入
     *
     * @param enterprise 缺失企业信息
     * @return 添加结果
     */
    @Insert("INSERT INTO enterprises_lack_info(name,code,remark,info_id,legal_person,area,gmt_create,creater,gmt_modify,modifier) " +
            "VALUES(#{en.name},#{en.code},#{en.remark},#{en.infoId},#{en.legalPerson},#{en.area},now(),#{en.creater},now(),#{en.modifier})")
    int add(@Param("en") Enterprise enterprise);

    /**
     * 删除缺失企业
     *
     * @param id 企业ID
     * @return 删除结果
     */
    @Delete("DELETE FROM enterprises_lack_info WHERE id= #{id}")
    int delete(@Param("id") int id);

    /**
     * 修改缺失企业信息
     *
     * @param enterprise 缺失企业信息
     * @return 修改结果
     */
    @Update("UPDATE enterprises_lack_info SET name=#{en.name},code=#{en.code},remark=#{en.remark},info_id=#{en.infoId},legal_person=#{en.legalPerson},area=#{en.area},gmt_modify=NOW(),modifier=#{en.modifier} WHERE id=#{en.id}")
    int update(@Param("en") Enterprise enterprise);
    /**
     * 查询缺失企业详情
     *
     * @param id      企业ID
     * @return 企业信息
     */
    @Select("SELECT id,`name`,`code`,remark,info_id as infoId,legal_person as legalPerson,area,gmt_create as gmtCreate,creater,gmt_modify as gmtModify,modifier FROM enterprises_lack_info where id =#{id}")
    Enterprise getInfo(@Param("id") int id);
    /**
     * 查询缺失企业列表
     *
     * @param enterprise 查询实体
     * @return 缺失企业列表
     */
    @SelectProvider(type = EnterpriseDaoProvider.class , method = "getList")
    List<Enterprise> getList(@Param("en") Enterprise enterprise);
}
